<?php
session_start();
/**
 * Định nghĩa WEB_ROOT 
 * là đường dẫn đến thư mục chứa website
 */
 defined("WEB_ROOT")
	|| define("WEB_ROOT", realpath(dirname(__FILE__)));
    
/**
 * Require thư viện sử dụng
 */
 require_once WEB_ROOT.'/application/library/DataProvider.php';
 require_once WEB_ROOT.'/application/library/Function.php';
/**
 * Require 3layer
 */
 require_once WEB_ROOT.'/application/Dto/Table.php';
 require_once WEB_ROOT.'/application/Bus/Table.php';
 
/**
 * Khởi tạo trang mặc định 
 * nếu không nhận được tham số từ client
 */
 $request['module']  = "default";
 $request['action'] = "index";

/**
 * Kiểm tra nếu có tham số 
 * nhận từ client thì khởi tạo trang cần đến
 */
 if(isset($_GET['mod'])) {
    $request['module'] = $_GET['mod'];
 }
 if(isset($_GET['act'])) {
    $request['action'] = $_GET['act'];
 }

/**
 * Khởi tạo kết nối database
 */
 $mysql = new DataProvider(array(
    'host'  =>"www.babyshop.com",
    'user'  =>"root",
    'pass'  =>"k20460077",
    'dbname'=>"babyshop"
 ));
 $Bus = new Bus_Table($mysql);
 
 /**
  * Khởi tạo dữ liệu trang
  */
  $url = baseUrl();
  $title = "Fashion Shop";
  $modBus = $Bus->Module->getItemByName($request['module']);
  if($modBus){
    $actBus = $Bus->Action->getItemByName_And_IdMod($request['action'], $modBus->idmodules);
    if($actBus){
        /*Load title cho trang từ cơ sở dữ liệu*/
        $title = $actBus->actions_title;
    }  
  }
  
  /**
   * Khởi tạo thông tin người dùng là guest
   */
   $group = $Bus->Group->getItemByName("guest");
   
   if($group){
        $userDto = new Dto_Table('users', $mysql, array('groups_idgroups'=>$group->idgroups));
    }
   
   if(isset($_SESSION['user'])){
        $userDto = new Dto_Table('users', $mysql, $_SESSION['user']);
   }
   
 /**
   * Kiểm tra quyền truy cập website
   */
   if(isset($actBus) && $actBus && isset($userDto)){
        $rules = $Bus->Rule->getItemByIdGroup_IdAction($userDto->groups_idgroups,$actBus->idactions);
            if(isset($_SESSION['user'])){
                if($rules && !$rules->rules_allow){
                    $request['module'] = "errors";
                    $request['action'] = "403";
                }
            }else{
                if($rules && !$rules->rules_allow){
                    $request['action'] = "login";
                }
            }

   };
/**
 * Kiểm tra trong thư mục WEB_ROOT.'/appication/gui' 
 * có tồn tại module và action đó hay không
 * nếu không có thì điều hướng đến trang báo lỗi 404
 */
 if(!file_exists(WEB_ROOT.'/application/gui/'.$request['module'].'/'
                                             .$request['action'].'.php')){ 
    $request['module'] = "errors";
    $request['action'] = "404";
 }
 
/**
 * Nhảy đến trang $request['module'] và $request['action']
 */
 require_once WEB_ROOT.'/application/gui/'.$request['module'].'/'
                                           .$request['action'].'.php';
 /**
  * Đóng kết nối cơ sở dữ liệu
  */
 $mysql->Close();
 
 /**
  * End of application
  */
?>